# author: axin
# date: 2021/4/6 16:06
# description:签名openid不被人看到
from itsdangerous import TimedJSONWebSignatureSerializer as Serializer, BadData

from django_meiduo.settings.dev import SECRET_KEY
from oauth.constants import ACCESS_TOKEN_EXPIRES

def check_access_token(access_token_openid):
    """
    反序列化openid
    :param access_token_openid: 签名后的openid（openid的密文）
    :return: openid的明文
    """
    # 创建序列化对象（序列化和反序列化的对象的参数必须是一模一样的）
    s = Serializer(SECRET_KEY, ACCESS_TOKEN_EXPIRES)
    # 反序列化openid密文
    try:
        data = s.loads(access_token_openid)
    except BadData:
        return None
    else:
        # 返回openid明文
        return data.get('openid')



def generate_access_token(openid):
    """
    签名（序列化）openid
    :param openid: openid明文
    :return: token(openid密文)
    """
    # 创建序列化其对象
    # s = Serializer('密钥：越复杂越安全','过期时间')
    s = Serializer(SECRET_KEY, ACCESS_TOKEN_EXPIRES)
    # 准备待序列化的字典数据
    data = {'openid': openid}
    # 调用dumps方法进行序列化 类型是bytes，需要转成字符串
    token = s.dumps(data)
    # 准备序列化后的数据
    return token.decode()
